package com.lmy.springboot.controller;

import com.lmy.springboot.bean.Admin;
import com.lmy.springboot.bean.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;

@Controller
@Slf4j
public class AdminController {

    /**
     * 响应用户登录请求
     * @param admin 自定义请求参数封装对象
     * @param session 用来把用户放入session，可以判断用户是否登录
     * @param model 将一些数据放入Model后，会自动放入Request域对象中，以便后续页面和方法使用
     * @return
     */
    @PostMapping(value = "/login")
    public String login(Admin admin, HttpSession session, Model model) {
        System.out.println(admin);
        //验证用户是否合法，默认给定规则密码666才允许登录
        if (StringUtils.hasText(admin.getUsername()) && StringUtils.hasText(admin.getPassword())
                & "666".equals(admin.getPassword())) {  //合法
            //重定向到manage.html
            //不使用请求转发，是为了防止用户刷新页面会重复提交表单
            //这里将/manage.html放入响应体Location属性中，浏览器再访问
            //这里manage.html表示要去找方法的映射路径为manage.html
            //将登录用户保存到session
            session.setAttribute("loginUser", admin);
            return "redirect:/manage.html";
        } else {    //不合法，转发到登录页面
            model.addAttribute("msg", "账号/用户错误");
            return "adminLogin";
        }
    }

    @GetMapping(value = "/manage.html")
    public String manage(Model model, HttpSession session) {

//        Object user = session.getAttribute("loginUser");
//        if (user != null) { //说明是成功登陆过
//            //        模拟用户数据，放入request域中
//            List<User> list = new ArrayList<>();
//            list.add(new User(1, "关羽", "666666", 20, "gy@sohu.com"));
//            list.add(new User(2, "张飞", "666666", 30, "zf@sohu.com"));
//            list.add(new User(3, "赵云", "666666", 22, "zy@sohu.com"));
//            list.add(new User(4, "马超", "666666", 28, "mc@sohu.com"));
//            list.add(new User(5, "黄忠", "666666", 50, "hz@sohu.com"));
//
//            //将数据放入request域中
//            model.addAttribute("users", list);
//            return "manage";
//        } else {    //没有登陆过，返回登录页，并给出提示
//            model.addAttribute("msg", "未登录/请登录");
//            //请求转发到templates目录下的adminLogin.html
//            return "adminLogin";
//        }

        //使用拦截器处理非法登录问题
        //模拟用户数据，放入request域中
        log.info("进入manage()");
        List<User> list = new ArrayList<>();
        list.add(new User(1, "关羽", "666666", 20, "gy@sohu.com"));
        list.add(new User(2, "张飞", "666666", 30, "zf@sohu.com"));
        list.add(new User(3, "赵云", "666666", 22, "zy@sohu.com"));
        list.add(new User(4, "马超", "666666", 28, "mc@sohu.com"));
        list.add(new User(5, "黄忠", "666666", 50, "hz@sohu.com"));

        //将数据放入request域中
        model.addAttribute("users", list);
        return "manage";

    }
}
